/*
	Enum: AudioPlaybackMode

	Once - Play once.
	Loop - Loops.
*/
enum AudioPlaybackMode { Once, Loop };

/*
	Function: LoadMusic

	Loads a music file from disk.

	Parameters:

		name - Name of the music resource.
		filepath - The filepath.

	Returns:

		Returns the music resource.
*/
LoadMusic(name, filepath);

/*
	Function: UnloadMusic

	Unloads a music resource.

	Parameter:

		music - The music resource.
*/
UnloadMusic(music);

/*
	Function: LoadSound

	Loads a sound file from disk.

	Parameters:

		name - Name of the sound resource.
		filepath - The filepath.

	Returns:

		Returns the sound resource.
*/
LoadSound(name, filepath);

/*
	Function: UnloadSound

	Unloads a sound resource.

	Parameter:

		sound - The sound resource.
*/
UnloadSound(sound);

/*
	Class: Sound

	Holds a sound resource.
*/
class Sound
{
	/*
		Function: Load

		Loads a sound file from the disk.

		Parameters

			name - The name of the sound resource.
			filename - The file name of the sound resource.
	*/
	Load(name, filename);

	/*
		Function: Unload

		Unloads the sound resource.
	*/
	Unload();

	/*
		Function: Play

		Plays the sound.
	*/
	Play();

	/*
		Function: SetVolume

		Sets the volume of the sound.
		*This wont effect any instances of the sound already playing*

		Parameters:

			volume - The volume of the sound (ranges from 0 - no volume, to 1 - full volume)

	*/
	SetVolume(volume);

	/*
		Function: GetVolume

		Returns the volume of the sound.

		Returns:

			The volume of the sound.
	*/
	GetVolume();
};

/*
	Class: Music

	Holds a music resource.
*/
class Music
{
	/*
		Function: Load

		Loads a music file from disk

		Parameters

			name - The name of the music resource.
			filename - The filename of the music resource.
	*/
	Load(name, filename);

	/*
		Function: Unload

		Unloads a music resource.
	*/
	Unload();

	/*
		Function: Play

		Plays the music resource.
	*/
	Play();

	/*
		Function: Pause

		Pauses the music resource.
	*/
	Pause();

	/*
		Function: Resume

		Resumes the music resource.
	*/
	Resume();

	/*
		Function: SetPlaybackMode

		Sets the playback mode.

		Parameters:

			playbackMode - The playback mode.

		See Also:

			<AudioPlaybackMode>
	*/
	SetPlaybackMode(playbackMode);

	/*
		Function: GetPlaybackMode

		Returns the playback mode of the music resource.

		Returns:

			The playback mode.
	*/
	GetPlaybackMoed();

	/*
		Function: SetVolume

		Sets the volume of the music.

		Parameters:

			volume - The volume of the music (ranges from 0 - no volume, to 1 - full volume)

	*/
	SetVolume(volume);

	/*
		Function: GetVolume

		Returns the volume of the music.

		Returns:

			The volume of the music.
	*/
	GetVolume();

	/*
		Function: GetPosition

		Returns the current playing position of the music resource. This ranges from 0 - At the start, to
		1 - The end of the music.

		Returns:

			The current position.
	*/
	GetPosition();
	
	/*
		Function: GetLengthInMS

		Returns the length of the music resource in milliseconds.

		Returns:
		
			The length of the music.
	*/
	GetLengthInMS();

	/*
		Function: IsPlaying

		Returns if the music is currently playing.

		Returns:

			True if the music is currently playing.
	*/
	IsPlaying();

	/*
		Function: IsPaused

		Returns if the music is paused.

		Returns:

			True if the music is paused.
	*/
	IsPaused();
};